package xyccontroller

import (
	"Cgo/backend/models"
	"Cgo/common"
	"strconv"

	"github.com/gin-gonic/gin"
)

func XycShopController(r *gin.RouterGroup) {
	r.POST("/add", common.HandlerFunc(AddShop))
	r.DELETE("/delete", common.HandlerFunc(DeleteShop))
	r.PUT("/update", common.HandlerFunc(UpdateShop))
	r.GET("/find", common.HandlerFunc(FindShop))
}

// 添加商品
// @Summary 添加商品
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param shop body models.XycShop true "商品信息"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/shop/add [post]
func AddShop(c *gin.Context) common.Result {
	var shop models.XycShop
	if err := c.ShouldBindJSON(&shop); err != nil {
		return common.R.Fail(err.Error())
	}
	if err := ShopDao.AddShopDao(shop); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("添加商品成功")
}

// 删除商品
// @Summary 删除商品
// @description 根据id删除商品
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param id query int true "商品id"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/shop/delete [delete]
func DeleteShop(c *gin.Context) common.Result {
	idStr := c.Query("id")
	id, _ := strconv.Atoi(idStr)
	shop := models.XycShop{Id: id}
	if err := ShopDao.DeleteShopDao(shop); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("删除商品成功")
}

// 更新商品
// @Summary 更新商品
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param shop body models.XycShop true "商品信息"
// @Success 200 {object} common.RT[string]
// @Router /backend/xyc/shop/update [put]
func UpdateShop(c *gin.Context) common.Result {
	var shop models.XycShop
	if err := c.ShouldBindJSON(&shop); err != nil {
		return common.R.Fail(err.Error())
	}
	if err := ShopDao.UpdateShopDao(shop); err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success("更新商品成功")
}

// 查找商品
// @Summary 查找商品
// @description 根据id查找商品,不传id则查找所有商品
// @Tags xyc_shop后台接口
// @Accept json
// @Produce json
// @Param id query int false "商品id"
// @Success 200 {object} common.RT[[]models.XycShop]
// @Router /backend/xyc/shop/find [get]
func FindShop(c *gin.Context) common.Result {
	idStr := c.Query("id")
	var id int
	if idStr != "" {
		id, _ = strconv.Atoi(idStr)
	}
	shops, err := ShopDao.FindShopByIdDao(models.XycShop{Id: id})
	if err != nil {
		return common.R.Fail(err.Error())
	}
	return common.R.Success(shops)
}
